在寫業務邏輯程式碼前,我習慣先定義出資料,及規劃大概的業務邏輯流程。
我們待辦事項資料預想會有一些欄位:
其他未來可以擴充的欄位...
設定好之後就可以定義資料了。
我們在 Model
資料夾內新建一個 TodoEvent.swift
,並實作 Migrator
:
import Foundation
import SQLite
import Sworm
struct TodoEvent {
var id: Int64
var title: String
var createAt: Date
var complete: Bool
}
extension TodoEvent: Migrator {
static var table: Tablex { Tablex("events") }
static let id = Expression<Int64>("id")
static let title = Expression<String>("title")
static let createAt = Expression<Date>("create_at")
static let complete = Expression<Bool>("complete")
static func migrate(_ db: Connection) throws {
try db.run(table.create(ifNotExists: true) { t in
t.column(id, primaryKey: true)
t.column(title)
t.column(createAt)
t.column(complete)
})
}
static func parse(_ row: Row) throws -> TodoEvent {
return TodoEvent(
id: try row.get(id),
title: try row.get(title),
createAt: try row.get(createAt),
complete: try row.get(complete)
)
}
func setter() -> [Setter] {
return [
TodoEvent.title <- title,
TodoEvent.createAt <- createAt,
TodoEvent.complete <- complete
]
}
}
目前這一版 App 只會規劃新增跟刪除待辦事項。
筆者習慣使用 Mermaid 來畫流程圖。
業務邏輯流程規劃出來之後,就會比較知道實際的邏輯要怎麼寫,會遇到什麼問題。
資料定義跟業務邏輯規劃,雖然沒有碰到程式碼,但對寫程式碼的幫助超乎想像的大。
試著用紙筆或 Mermaid 把你的流程畫下來吧!